The continued evolution and integration of computer networking has led to computerized networks becoming the backbone of modern communication. Yet, despite the tremendous development, both small and large scale computer networks remain subject to service interruptions and failures (due to, for example, inadvertent cable damage, interface card faults, software bugs, and mis-configuration, etc.). Computer networks typically utilize a networking model and communications protocols defined by the Internet Protocol Suite such as Transmission Control Protocol (TCP)/IP.
These networks, also known as Internet Protocol (IP) networks, typically adhere to a topology that includes multiple nodes, such as data communication equipment (“DCE”) like switches and routers; or data terminal equipment (“DTE”) such as computers, servers, mobile devices. In typical networks, both DCEs and DTEs may be addressed individually in the network and interconnected by communication links. Data is transmitted throughout the network by being routed through one or more links until it reaches the node at the destination address. Network failures result when a networked node or link is unresponsive or otherwise incapable of either processing and/or forwarding data on to the next node along the route.
IP networks utilize a variety of methods to assist in recovery from network failures. Unfortunately, some recovery methods (such as shortest-path recalculation, IP fast reroute, etc.) are typically unable to provide sufficient coverage to all possibly affected nodes or links in the network. More sophisticated methods may be able to provide sufficient coverage, but in exchange can be inconveniently disruptive and prohibitively complex. Additionally, convergence to stand-by resources may be problematic or time-consuming, and worse still these types of solutions may be able to reach only locally optimal solutions that could easily lead to new congestions in the network, while also preventing some of the resources from being utilized due to their distributed nature.
Software Defined Networking (SDN) is an approach to data/computer networking that decouples the primary functions of a computer network infrastructure. Under SDN solutions, the mechanism for making network traffic routing and management decisions (the control plane) is decoupled from the systems that perform the actual forwarding of the traffic to its intended destinations (the data plane). Decoupling the control plane from the data plane allows for the centralization of control logic with a global view of the network status and traffic statistics that eventually lead to much improved resource utilization, effective policy administration and flexible management with significantly reduced cost.
Under many SDN implementations, network devices still perform the functions on the data plane, but the functions performed on the control plane are decoupled and abstracted to a logically central layer/plane. OpenFlow (OF) is a standardized protocol used by an external network controller (typically a server) to communicate with a network device (typically a network switch) in SDN networks. The OF protocol allows the controller to define how packets are forwarded at each SDN network device, and the networking devices (such as switches) to report to the controller their status and/or traffic statistics.
While becoming increasingly popular, the deployment of SDN devices (e.g., SDN switches) is generally a gradual process, due to the cost and labor required to replace incumbent Internet Protocol (IP) network devices with SDN enabled network devices. Moreover, large-scale replacement of existing portions of infrastructure would likely result in severe service disruptions if performed all at once.